home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1991 August
/
64er_Magazin_91-08_1991_Markt__Technik_de_Side_A.d64
/
demo 1.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
1KB
|
39 lines
10 sys36864
20 .opt oo
30 *= $c000
40 ; dieses programm definiert einen neuen
42 ; basic-befehl namens !s. dieser befehl
44 ; erzeugt einen ton.
46 ; nikolaus heusler, muenchen, 3.91
100 ibas =776;vektor fuer basicbefehl
110 chrget =115;naechstes zeichen holen
120 inter =$a7ae;interpreterschleife
130 oldbas =$a7e7;alten basicbefehl bearbeiten
150 syntax =$af08;syntax error
160 sid =54272;soundchip basisadresse
200 ; --- neuen befehl definieren
300 lda #<neubef:ldy #>neubef;zeiger auf neue befehlsroutine
310 sta ibas:sty ibas+1;vektor verbiegen
320 rts;und fertig
330 ; --- neuen basicbefehl ausfuehren
340 neubef jsr chrget;erstes zeichen holen
350 cmp #33;war es das ausrufezeichen
360 beq call;ja, dann neuer befehl
370 ora #0;sonst flags setzen:jmp oldbas;und normal weitermachen
380 ; --- ausrufezeichen erkannt
390 call jsr chrget;zeichen nach '!' holen
400 cmp #83;buchstabe 's' testen
410 beq stimmt;ja, dann !s befehl
420 jmp syntax;sonst syntax error ausgeben, fertig
430 ; --- !s befehl - ton ausgeben
440 stimmt lda #0:ldx #24;sid-register loeschen
450 clrsid sta sid,x:dex;loesch-schleife:bpl clrsid;alle register auf null
460 lda #15:sta sid+24;lautstaerke 15
470 lda #100:sta sid+1;tonhoehe festlegen
480 lda #240:sta sid+6;wellenform
490 lda #17:sta sid+4;ton einschalten
500 ldx #0:ldy #0;warteschleife
510 wait nop:dex:bne wait:dey:bne wait;wartet ca. 1/2 sekunde
520 lda #16:sta sid+4;ton ausschalten
530 jsr chrget:jmp inter;befehl fertig, weiter wie gehabt